﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using ProjControleModelos;

namespace ProjControleDAL
{
   public class VendasDAL
    {
       SqlCommand cmd = null;
       Dados objD = null;

       public VendasDAL()
       {
       }
        #region Métodos
        //inserir
       public void inserir(Venda objV)
       {
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "insert into venda values (@valor,@data,@cod_cliente,@cod_func,@forma,@tipo,@obs)";
               cmd.Parameters.Add(new SqlParameter("@valor", SqlDbType.Float)).Value = objV.val_venda;
               cmd.Parameters.Add(new SqlParameter("@data", SqlDbType.Date)).Value = objV.dt_venda;
               cmd.Parameters.Add(new SqlParameter("@cod_cliente", SqlDbType.Int)).Value = objV.cod_cliente;
               cmd.Parameters.Add(new SqlParameter("@cod_func", SqlDbType.Int)).Value = objV.cod_funcionario;
               cmd.Parameters.Add(new SqlParameter("@forma", SqlDbType.VarChar)).Value = objV.forma_pgto;
               cmd.Parameters.Add(new SqlParameter("@tipo", SqlDbType.VarChar)).Value = objV.tipo_recebimento;
               cmd.Parameters.Add(new SqlParameter("@obs", SqlDbType.Text)).Value = objV.observacoes;
               objV.cod_venda = objD.executaComandoAI(cmd,"venda");
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
       }
       //alterar
       public void alterar(Venda objV)
       {
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "update venda set val_venda = @valor,dt_venda = @data,cod_cliente = @cod_cliente,cod_funcionario = @cod_func, " +
                   "forma_pgto = @forma,tipo_recebimento = @tipo,observacoes = @obs where cod_venda = @codigo";
               cmd.Parameters.Add(new SqlParameter("@valor", SqlDbType.Float)).Value = objV.val_venda;
               cmd.Parameters.Add(new SqlParameter("@data", SqlDbType.Date)).Value = objV.dt_venda;
               cmd.Parameters.Add(new SqlParameter("@cod_cliente", SqlDbType.Int)).Value = objV.cod_cliente;
               cmd.Parameters.Add(new SqlParameter("@cod_func", SqlDbType.Int)).Value = objV.cod_funcionario;
               cmd.Parameters.Add(new SqlParameter("@forma", SqlDbType.VarChar)).Value = objV.forma_pgto;
               cmd.Parameters.Add(new SqlParameter("@tipo", SqlDbType.VarChar)).Value = objV.tipo_recebimento;
               cmd.Parameters.Add(new SqlParameter("@obs", SqlDbType.Text)).Value = objV.observacoes;
               cmd.Parameters.Add(new SqlParameter("@codigo", SqlDbType.Int)).Value = objV.cod_venda;
               objD.executaComando(cmd);

           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
       }
       public void excluir(Venda objV)
       {
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "delete from venda where cod_venda = @codigo";
               cmd.Parameters.Add(new SqlParameter("@codigo", SqlDbType.Int)).Value = objV.cod_venda;
               objD.executaComando(cmd);
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
       }

       public Venda localizar(int codigo)
       {
           Venda objV = null;
           DataTable tab;
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "select * from venda where cod_venda = @codigo";
               cmd.Parameters.Add(new SqlParameter("@codigo", SqlDbType.Int)).Value = codigo;
               tab = objD.executaConsulta(cmd);
               if(tab != null)
                   if (tab.Rows.Count == 1)
                   {
                       objV = new Venda(codigo,
                           Double.Parse(tab.Rows[0]["val_venda"].ToString()),
                           DateTime.Parse(tab.Rows[0]["dt_venda"].ToString()),
                           int.Parse(tab.Rows[0]["cod_cliente"].ToString()),
                           int.Parse(tab.Rows[0]["cod_funcionario"].ToString()),
                           tab.Rows[0]["forma_pgto"].ToString(),
                           tab.Rows[0]["tipo_recebimento"].ToString(),
                           tab.Rows[0]["observacoes"].ToString());
                   }
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
           return objV;
       }
       public DataTable localizar(String nome)
       {
           DataTable tab;
           try
           {
               cmd = new SqlCommand();
               objD = new Dados();
               cmd.CommandText = "select v.cod_venda,c.nome_cliente,v.dt_venda,v.val_venda,f.nome_funcionario " +
                   "from venda v,clientes c,funcionario f " +
                   "where v.cod_cliente = c.cod_cliente and v.cod_funcionario = f.cod_funcionario and " +
                   "c.nome_cliente like @nome";
               cmd.Parameters.Add(new SqlParameter("@nome", SqlDbType.VarChar)).Value = "%" + nome + "%";
               tab = objD.executaConsulta(cmd);
           }
           catch (Exception ex)
           {
               
               throw ex;
           }
           cmd = null;
           objD = null;
           return tab;
       }

        #endregion
    }
}
